ServiceLoaderMetadata{ }
getLocation{ }
getValue{ }
load{
  return load(service,Thread.currentThread().getContextClassLoader());
}
load{
  if (loader == null) {
    loader=service.getClassLoader();
  return new ServiceLoader<S>(service,loader);
}
loadInstalled{
}
ServiceLoader{ }
reload{
  for (  URL serviceFile : loadServiceFiles()) {
    loadServiceFile(serviceFile);
}
loadServiceFiles{
  List<URL> serviceFiles=new ArrayList<URL>();
  try {
    Enumeration<URL> serviceFileEnumerator=loader.getResources(serviceFile);
    while (serviceFileEnumerator.hasMoreElements()) {
      serviceFiles.add(serviceFileEnumerator.nextElement());
  return serviceFiles;
}
loadServiceFile{
  try {
    is=serviceFile.openStream();
    BufferedReader reader=new BufferedReader(new InputStreamReader(is,"UTF-8"));
    String serviceClassName=null;
    while ((serviceClassName=reader.readLine()) != null) {
      serviceClassName=trim(serviceClassName);
      if (serviceClassName.length() > 0) {
        loadService(serviceClassName,serviceFile,i);
 catch (  IOException e) {
      try {
 catch (      IOException e) {
}
trim{
  final int comment=line.indexOf('#');
  if (comment > -1) {
    line=line.substring(0,comment);
  return line.trim();
}
loadService{
  Class<? extends S> serviceClass=loadClass(serviceClassName);
  S serviceInstance=prepareInstance(serviceClass);
  providers.add(new ServiceLoaderMetadata<S>(serviceInstance,file,lineNumber));
}
loadClass{
  Class<? extends S> serviceClass=null;
    clazz=loader.loadClass(serviceClassName);
    serviceClass=clazz.asSubclass(expectedType);
catch (  ClassCastException e) {
}
prepareInstance{
  try {
    Constructor<? extends S> constructor=serviceClass.getDeclaredConstructor();
    constructor.setAccessible(true);
    return constructor.newInstance();
 catch (  NoClassDefFoundError e) {
    return null;
catch (  InvocationTargetException e) {
catch (  IllegalArgumentException e) {
catch (  InstantiationException e) {
catch (  IllegalAccessException e) {
catch (  SecurityException e) {
}
iterator{
  if (providers == null) {
  return providers.iterator();
}
toString{
  return "Services for " + serviceFile;
}
